package tabeladedados;

import java.util.List;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

/**
 * @author Sandro Marcelo Pascoal
 */
public class TabelaDeDados {

    private JTable tabela = null;
    private DefaultTableModel modelo = null;
    // Lista dos dados usados para popular a tabela
    private List dados = null;

    public TabelaDeDados(JTable tabela) {
        this.tabela = tabela;

        // Instancia de um novo modelo para tabela
        // Nessa instancia é sobreescrito o método isCellEditable para
        // que o JTable não possa ser editado.
        modelo = new DefaultTableModel() {

            @Override
            public boolean isCellEditable(int row, int col) {
                return false;
            }
        };
    
        // Desliga a opção que define o tamanho automático das colunas
      // tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

        // Não permite seleção múltipla de linhas
        tabela.getSelectionModel().setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
      //  tabela.setModel(null);
        tabela.setModel(modelo);

    }

    public void adicionarColuna(String nome, int tamanho) {       
        modelo.addColumn(nome);       
        int i = modelo.getColumnCount()  -1; 
     //   tabela.getColumnModel().getColumn(i).setPreferredWidth(tamanho);
        TableColumn tab = tabela.getTableHeader().getColumnModel().getColumn(i);
        tab.setPreferredWidth(tamanho);
        
        }

    public void adicionarLinha(Object[] linha) {
        
        modelo.addRow(linha);
       
    }

    public void removerTodos() {
        modelo.getDataVector().removeAllElements();
        tabela.removeAll();
        tabela.updateUI();
    }

    public int getQuantidadeLinhas() {
        return tabela.getRowCount();
    }

    public int getLinhaSelecionada() {
        return tabela.getSelectedRow();
    }

    public void setLinhaSelecionada(int linha) {
        tabela.setRowSelectionInterval(linha, linha);
    }

    public Object getObjetoSelecionado() {
        return dados.get(tabela.getSelectedRow());
    }
    

    public void setDados(List dados) {
        this.dados = dados;
    }

    public void pesquisar(String texto, String combo, int colunaString) {
        for (int i = 0; i < modelo.getRowCount(); i++) {

            if (combo.equals("Nome")) {
                String res = (String) modelo.getValueAt(i, colunaString);
                res = res.toLowerCase();
                texto = texto.toLowerCase();
                if (!res.startsWith(texto)) {
                   
                } else {
                    System.out.println("texot else" + texto);                    
                    modelo.moveRow(i, i, 0);
                    setLinhaSelecionada(i);                   
                    break;
                }
            } else if (combo.equals("Número")) {
                String res = (String) modelo.getValueAt(i, colunaString).toString();
                
                if (!res.startsWith(texto)) {
                      
                } else {                    
                    modelo.moveRow(i, i, 0);
                    setLinhaSelecionada(i);
                    break;
                }
            }

        }
    }


}
